TCP is the dominant transport layer protocol of the current Internet, carrying around 90% of the total traffic [15, 10]. Hence, the performance of TCP is of utmost importance to the well-being of the Internet and has direct impacts on user experiences. Although TCP is a well-studied area where a large number of improvements have already been proposed, TCP performance over cellular networks (e.g., 3G or 4G networks) has not been given adequate attention.
With the exponential growth of hand-held devices like smart phones and tablet computers, TCP performance in cellular networks is becoming more and more important. Unfortunately, according to extensive measurements, TCP has a number of performance issues in this new environment, including extremely long delay and sub-optimal throughput. The reasons behind such performance degradations are two-fold. First, most of the widely deployed TCP implementations use loss-based congestion control where the sender will not slow down its sending rate until it sees packet loss. Second, most cellular networks are over-buffered to accommodate the bursty traffic and channel variability [12, 7]. The combination of these two facts leads to the following phenomenon: the TCP sender keeps increasing its sending rate to probe the available bandwidth along the path. Even if it has already reached the bottleneck link capacity, the congestion window will continue to grow since all the overshot packets are absorbed by the buffers and are not lost. This results in a long queue in the cellular base station and up to several seconds of end-to-end delay. This long queuing not only affects the performance of delay-sensitive applications like video streaming (video streaming applications like YouTube use TCP) but also degrades throughput performance of TCP.
To solve this problem, Android phones adopt a simple trick: a static upper limit is set on the maximum receive buffer size. Since the advertised receive window cannot exceed the receive buffer size and the sender cannot send more than what is allowed by the advertised receive window, this limit effectively prevents TCP congestion window from excessive growth (see FIGS. 1(a) and 1(b)). However, since the limit is statically configured, it is sub-optimal in certain scenarios and will degrade TCP performance in both throughput and delay.
Accordingly, in light of these difficulties, there exists a need for receiver-based methods, systems, and computer readable media for controlling TCP sender behavior in cellular communications networks with large buffer sizes.